package com.newviews.tcmip.dao;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.newviews.tcmip.pojo.po.*;
import com.newviews.tcmip.web.vo.etcmherb.HerbIngrVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 中草药库 Mapper 接口
 * </p>
 *
 * @author lxc
 * @since 2024-02-29
 */
public interface EtcmHerbExMapper extends BaseMapper<EtcmHerbExPo> {
    IPage<EtcmHerbPo> getPageByRe(Page<EtcmHerbPo> objectPage,@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbPo> wrapper);


    IPage<EtcmHerbExPo> getPage(@Param("page") Page<EtcmHerbExPo> page, @Param(Constants.WRAPPER) QueryWrapper<EtcmHerbExPo> wrapper, @Param("uiTypeCode") String uiTypeCode, @Param("languageCode") String languageCode);

    IPage<EtcmIngrPo> getPageByIngr(Page<EtcmIngrPo> page,@Param(Constants.WRAPPER) QueryWrapper<EtcmIngrPo> wrapper);

    IPage<EtcmPxPo> getPageByPx(Page<EtcmPxPo> page,@Param(Constants.WRAPPER) QueryWrapper<EtcmPxPo> wrapper);

    List<EtcmHerbDiseasePo> getPageByAssociatedDiseases(@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbDiseasePo> wrapper);

    IPage<EtcmExperimentalRecordsPo> getPageByExperimentalRecords(Page<EtcmExperimentalRecordsPo> objectPage,@Param(Constants.WRAPPER) QueryWrapper<EtcmExperimentalRecordsPo> wrapper);

    List<EtcmIngrPo> getListByIngr(@Param(Constants.WRAPPER) QueryWrapper<EtcmIngrPo> wrapper);

    List<EtcmExperimentalRecordsPo> getListByExperimentalRecords(@Param(Constants.WRAPPER) QueryWrapper<EtcmExperimentalRecordsPo> wrapper);

    List<EtcmDiseasePo> getListByAssociatedDiseases(@Param(Constants.WRAPPER) QueryWrapper<EtcmDiseasePo> wrapper);

    List<EtcmPxPo> getListByPx(@Param(Constants.WRAPPER) QueryWrapper<EtcmPxPo> wrapper);

    List<EtcmHerbExPo> getList(@Param(Constants.WRAPPER)QueryWrapper<EtcmHerbExPo> eq);

    List<EtcmHerbMeridiansPo> getMeridiansList(@Param("langCode") String langCode);

    List<String> getFlavorStatistics(@Param(Constants.WRAPPER)QueryWrapper<EtcmHerbPo> eq);


    List<String> getPropertyStatistics(@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbPo> wrapper);

    List<String> getMeridiansStatistics(@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbPo> wrapper);



    IPage<EtcmIngrTargetPo> getTarget(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper<EtcmTargetPo> wrapper, @Param("herbId") String herbId);

    List<EtcmTargetPo> getTargetList(@Param(Constants.WRAPPER) QueryWrapper<EtcmTargetPo> wrapper, @Param("herbId") String herbId);

    List<EtcmHerbHerbPo> getPageByCombinedHerbs(@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbHerbPo> wrapper);

    IPage<EtcmExperimentalRecordsIngrPo> getHerbByExperimentalRecords(@Param("objectPage") Page<EtcmExperimentalRecordsPo> objectPage, @Param(Constants.WRAPPER) QueryWrapper<EtcmExperimentalRecordsPo> wrapper, @Param("herbId") String herbId);

    List<EtcmIngrIngrPo> getIngrAndIngrByPxId(@Param("herbId") String herbId, @Param("langCode") String langCode);

    List<HerbIngrVo> getHerbAndIngrByPxId(@Param("herbId") String herbId, @Param("langCode") String langCode);

    IPage<EtcmHerbPo> getIndexPage(Page<EtcmHerbPo> objectPage ,@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbPo> wrapper);

    List<EtcmHerbExPo> getStatisticsHerb(@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbExPo> wrapper);

    List<EtcmHerbPo> getIndexDownload(@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbPo> wrapper);

    List<EtcmHerbExPo> getHerbDownload(@Param(Constants.WRAPPER) QueryWrapper<EtcmHerbExPo> wrapper, @Param("uiTypeCode") String uiTypeCode, @Param("langCode") String langCode);


    List<EtcmIngrTargetPo> getDownloadHerbTarget(@Param(Constants.WRAPPER) QueryWrapper<EtcmTargetPo> wrapper, @Param("herbId") String herbId);

    List<EtcmExperimentalRecordsIngrPo> getListErDownload(@Param(Constants.WRAPPER)  QueryWrapper<EtcmExperimentalRecordsPo> wrapper, @Param("herbId") String herbId);
}
